package com.kotlin.flong.flow

import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.asFlow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.runBlocking

/**
 * @Author:liangjl
 * @Date: 2020/7/10-21:31
 * @Eamil:jilongliang@sina.com
 * @Description:
 * 1、Flow的中间运算符的思想与Java Stream完全一致
 * 2、Flow雪Sequence之间在中间运算符上的重要差别在于：对于Flow来说，这些中间运算符内的代码是 可以调用挂起函数的
 */

private suspend fun myExcue(intput: Int): String {
    delay(1000)
    return "input $intput"
}

fun main() = runBlocking {

    //找出大于5的数据，并且操作flow的终止操作collect方法
    (1..10).asFlow().filter { it > 5 }.map { input -> myExcue(input) }
        .collect { println(it) }

}
